package com.abner.test;

/**
 * @author abner
 */
public class Exam5 {

    static int s;
    int i;
    int j;

    {
        int i = 1;
        i++;
        j++;
        s++;
    }

    public void test(int j) {
        j++;
        i++;
        s++;
    }

    /**
     * 局部变量声明的位置 方法体中、形参中、代码块中
     * 成员变量声明的位置 类中方法外
     *                         类变量   有static修饰
     *                         实例变量 没有static修饰
     * 成员变量和局部变量重名而且没有this会采用就近原则去找
     *
     * 生命周期:
     *      局部变量:每一次调用执行的都是新的生命周期
     *      实例变量:每一个实例变量都是独立的
     *      类变量:是共享的
     */
    public static void main(String[] args){

        // 每次实例化都会执行代码块
        Exam5 obj1 = new Exam5();
        Exam5 obj2 = new Exam5();

        obj1.test(10);
        obj1.test(20);
        obj2.test(30);

        System.out.println(obj1.i + "," + obj1.j + "," + obj1.s);
        System.out.println(obj2.i + "," + obj2.j + "," + obj2.s);
    }
}
